/*
 * @Author: zi.yang
 * @Date: 2021-09-29 00:13:21
 * @LastEditors: zi.yang
 * @LastEditTime: 2021-10-05 01:01:45
 * @Description: In User Settings Edit
 * @FilePath: \ziYangPM\src\plugins\validator.js
 */
import Vue from 'vue'
import validate from '@/Utils/validate'
import * as rules from 'vee-validate/dist/rules'
import { extend, localize, ValidationObserver, ValidationProvider } from 'vee-validate'
import zhCN from 'vee-validate/dist/locale/zh_CN.json'

// 中文语言包
localize('zh_CN', zhCN)

Object.keys(rules).forEach(rule => {
  extend(rule, rules[rule])
})

// 账号检查
extend('isAccount', {
  validate (value) {
    return validate.isAccount(value)
  },
  message: '{_field_}只允许5-16字节，字母数字下划线组合！'
})

// 密码检查
extend('isPassword', {
  validate (value) {
    return validate.isPassword(value)
  },
  message: '密码必须8-16位，且包括至少1个大写字母，1个小写字母，1个数字，1个特殊字符'
})

// 校验中文名
extend('isChineseName', {
  validate (value) {
    return validate.isChinese(value) && value.length >= 2 && value.length <= 4
  },
  message: '必须是中文姓名且在2-4位之间'
})

// 手机号校验
extend('isPhone', {
  validate (value) {
    return validate.isPhone(value)
  },
  message: '输入的手机号不符合规则！'
})

// 字符最长与最短
extend('minmax', {
  validate (value, { min, max }) {
    return value.length >= min && value.length <= max
  },
  params: ['min', 'max'],
  message: '{_field_} 字段长度必须在 {min} - {max} 位之间！'
})

Vue.component('ValidationObserver', ValidationObserver)
Vue.component('ValidationProvider', ValidationProvider)
